//################################################################################
// MIT License
// Copyright (c) 2024 ZhangYihua
//
// Change Logs:
// Date           Author       Notes
// 2020-06-06     ZhangYihua   first version
//
// Description  : 
//################################################################################

module gray2bin #(
parameter           BW                      = 8             // bit width
) ( 
input               [BW-1:0]                i_gray,         // gray
output              [BW-1:0]                o_bin           // binary
);

//################################################################################
// define local varialbe and localparam
//################################################################################

reg                 [BW-1:0]                bin;

//################################################################################
// main
//################################################################################

always@(*) begin:G2B
    integer         i;

    for (i=BW-1; i>=0; i=i-1) begin
         bin[i] = ^(i_gray>>i);
    end
end

assign o_bin = bin;

endmodule

